package com.dragon.common.enums;

import lombok.Getter;

import java.util.Arrays;
import java.util.Objects;

/**
 * 业务类型枚举
 *
 * @author dragon
 * @version 1.0
 * @date 2024/7/30 14:26
 */
@Getter
public enum BusinessType {

    /**
     * 其它
     */
    OTHER(0, "其它"),

    /**
     * 新增
     */
    INSERT(1, "新增"),

    /**
     * 修改
     */
    UPDATE(2, "修改"),

    /**
     * 删除
     */
    DELETE(3, "删除"),

    /**
     * 上传
     */
    UPLOAD(4, "上传"),

    /**
     * 下载
     */
    DOWNLOAD(5, "下载"),

    /**
     * 导出
     */
    EXPORT(6, "导出"),

    /**
     * 导入
     */
    IMPORT(7, "导入"),

    /**
     * 清空数据
     */
    CLEAN(8, "清空数据"),

    /**
     * 更改菜单显示状态
     */
    MENU_CHANGE_VISIBLE(101, "更改菜单显示状态"),

    /**
     * 更改菜单状态
     */
    MENU_CHANGE_STATUS(102, "更改菜单状态"),

    /**
     * 更改角色状态
     */
    ROLE_CHANGE_STATUS(201, "更改角色状态"),

    /**
     * 批量添加授权用户
     */
    ROLE_AUTH_USER_ADD_BATCH(202, "批量添加授权用户"),

    /**
     * 批量删除授权用户
     */
    ROLE_AUTH_USER_DELETE_BATCH(203, "批量删除授权用户"),

    /**
     * 更改用户状态
     */
    USER_CHANGE_STATUS(301, "更改用户状态"),

    /**
     * 批量添加授权角色
     */
    USER_AUTH_ROLE_ADD_BATCH(302, "批量添加授权角色"),

    /**
     * 强制注销在线用户
     */
    USER_ONLINE_LOGOUT(401, "强制注销在线用户"),

    /**
     * 强制踢掉在线用户
     */
    USER_ONLINE_KICK_OUT(402, "强制踢掉在线用户"),
    ;

    /**
     * 业务类型
     */
    private final Integer code;

    /**
     * 业务类型描述
     */
    private final String des;

    BusinessType(Integer code, String des) {
        this.code = code;
        this.des = des;
    }

    public static BusinessType getByCode(Integer code) {
        return Arrays.stream(values()).filter(item -> item.code.equals(code)).findFirst().orElse(null);
    }

    public static String getDesByCode(Integer code) {
        if (Objects.isNull(code)) {
            return null;
        }

        BusinessType businessType = getByCode(code);
        return Objects.isNull(businessType) ? null : businessType.getDes();
    }

}
